Google ColabとPythonでNocoBaseのAPIにアクセスする

Google ColabとPythonでNocoBaseのAPIにアクセスする

Google ColabとPythonを使ってNocoBaseのAPIにアクセスする方法を解説しました。APIトークンの取得からPythonコードの実装例まで、具体的な手順を紹介しています。NocoBaseとGoogleスプレッドシートのデータ連携を効率的に行いたい方に向けた内容です。
Clock Icon2024.07.17

困っていたこと

NocoBaseとGoogleスプレッドシートとの間で読み書きをしたいです。
例えばNocoBaseの情報をスプレッドシートに出力したり、逆にスプレッドシートの情報をNocoBaseに取り込んだりできると便利です。

動作環境を用意するのも手間なので、Google ColabとPythonを使って行いたいです。

どう対応すればいいの?

拙作の python-nocobase を使うとPythonからNocoBaseのデータを読み書きすることができます。

まず下記ブログを参考にAPIにアクセスするためのAPI Tokenを入手してください。

https://dev.classmethod.jp/articles/nocobase-use-api/

python-nocobaseは python-nocodb のコードを大いに参考にさせてもらいました。

https://github.com/elchicodepython/python-nocodb

Pythonコード

python-nocobaseは私のGitHubリポジトリにあるので、下記コマンドでインストールします。

!pip install git+https://github.com/ueki-kazuki/python-nocobase

下記のPythonコードはコレクション(DBテーブル)を一覧表示します。

実行前にColab画面左のシークレットで NOCOBASE_URLに接続先のNocoBaseのURL を、 NOCOBASE_TOKEN には上記で入手したNocoBaseのAPI Tokenを設定しておいてください。

from google.colab import userdata
from nocobase.exceptions import NocoBaseAPIError
from nocobase.nocobase import JWTAuthToken
from nocobase.infra.requests_client import NocoBaseRequestsClient

auth = JWTAuthToken(userdata.get("NOCOBASE_TOKEN"))
client = NocoBaseRequestsClient(auth, userdata.get("NOCOBASE_URL"))

for c in client.collections().list():
    print(f'{c["name"]=}')

clientに対して命令を実行することで各種操作が行えるようになっています。collectionsはテーブル一覧を取得する命令です。

どんな操作ができるかは Collection rows operations
を参考にしてください。

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.